1. Field of Invention
This invention relates generally to very long instruction word processors and more specifically to flow control of instructions executed in a very long instruction word processor.
2. Discussion of Related Art
Processors are well known and widely used in many applications. A processor with a scalar architecture fetches an instruction and data for the instruction each time the instruction is executed. In executing a loop that requires an instruction be executed multiple times, a processor with a scalar architecture will fetch the instruction multiple times.
Some processors employ vector architectures. A vector architecture allows the processor to fetch an instruction once and then execute it multiple times with different data. In applications with relatively large loops, the total time required to execute a program can be reduced because each instruction needs to be fetched only once per loop. Vector architectures have been generally limited to high end processors used in supercomputers and other computation intensive applications because they require significant space on a semiconductor die on which the processor may be implemented.
Some scalar processors have been adapted to execute multiple operations for one fetch of an instruction. However, these processors have required that instructions specifying multiple operations be encoded in one instruction word. Such architectures proved difficult in practice to use. The instruction set for the processor needed to be expanded to accommodate many new instructions encoding multiple operations. In addition, making a complier that could identify patterns of instructions in a program that could be mapped to an instruction encoding multiple operations proved difficult.
Very Long Instruction Word (VLIW) processors are also known. In a VLIW processor, each instruction contains multiple fields. Each field contains a value that specifies control signals to be applied to a functional unit within the processor.
Disk drives have not previously included processors. Disk drives are used in many computer systems to store large amounts of information. FIG. 1 shows a disk drive 100 such as may be used in a conventional desktop computer. Disk drive 100 includes a disk platter 110. Disk platter 110 is the physical storage medium for disk drive 100.
Disk controller 105 controls the reading and writing of information on disk platter 110. Disk controller 105 also provides an interface to the computer or other system in which disk drive 100 is installed. Here, the portion of disk drive 100 that reads information from the disk is shown. A similar portion may be used to write information on the disk, but is not shown for simplicity.
Information is stored on the disk by altering a physical property of disk platter 110. For example, disk platter 110 may contain a coating that can be altered to produce a magnetic field. A bit of information is stored by altering a very small area of the coating to produce the magnetic field. A magnetic field sensed adjacent that area may indicate that a logical one has been stored in that area. Alternatively, the absence of a magnetic field adjacent that area may indicate a logical zero is stored.
Head 112 is positioned near the surface of disk platter 110. It contains a sensor that senses the magnetic field adjacent small areas of disk platter 110. The output of head 112 indicates what information has been stored in a specific area on the disk. In operation, disk platter 110 rotates so that head 112 passes over multiple areas and outputs a signal representing the sensed magnetic field over a series of areas on disk platter 110. Head 112 is controlled to move back and forth across the surface of the disk. In this way, any area of disk platter 110 may be brought under head 112. Motion of disk platter 110 and head 112 is synchronized so that the output of head 112 will represent, at a known time, values stored in a region of disk platters 110. Often, a disk drive is controlled to read multiple values at one time. The values read at one time are sometimes called a “sector.”
Though information stored in disk drive 100 will generally be stored in digital form, head 112 outputs an analog signal. Disk controller 105 receives the output from head 112 and processes the analog signal to indicate the specific bits of information read from disk drive 100.
Disk controller 105 is here shown to contain a processing circuit 114 that includes a series of processing blocks 1141, 1142 . . . 114N to process the output of head 112. Each of the processing blocks performs a function that is one step in the conversion of the analog signal sensed by head 112 to a stream of digital bits that represents information read from the disk. For example, one of the processing blocks 1141, 1142 . . . 114N may perform a timing recovery function. Others may add a gain or offset or perform other operations to reliably read information from the disk platter 110.
In a conventional disk controller, each of the processing blocks is controlled by a state machine. Here, each processing block 1141 . . . 114N includes a corresponding state machine 1241, 1242 . . . 124N. Each of the state machines includes counters or registers that store values identifying a state. Each state machine 1241, 1242 . . . 124N includes logic circuitry that changes the current state of the state machine based on inputs or other factors. The logic circuitry also defines the outputs produced by the state machine in each state. The outputs of each state machine may control a processing block or another state machine. State machines may be designed to provide the desired level of control over each of the processing blocks 1141, 1142 . . . 114N.
In normal operation, the output of processing block 114N passes through a switching circuit 130 and is connected to a digital signal processing core (DSP) 120. When the chain of processing blocks 1141, 1142 . . . 114N provides sufficient processing to convert the analog signal from head 112 into a stream of digital values, DSP 120 serves simply as an interface to the computer system in which disk drive 100 is installed.
When the chain of processing blocks 1141, 1142 . . . 114N cannot reliably convert the analog signal read by head 112 into a stream of digital values, DSP 120 may control offline processing. DSP 120 is configured to receive values from each of the processing blocks 1141, 1142 . . . 114N. DSP 120 may be programmed to attempt to recover a stream of digital values based on the outputs of each of the processing blocks. Alternatively, DSP 120 may control switch 130 to connect further processing blocks, such as processing block 116, to the chain of processing blocks in processing circuit 114.
Processing block 116 is controlled by a state machine 126 in the same way that processing blocks 1141, 1142 . . . 114N are controlled by corresponding state machines 1241, 1242 . . . 124N. With processing block 116 connected through switch 130 to processing circuit 114, the signal read from disk platter 110 may be reapplied to processing circuit 114 for a second pass computation of digital values. Processing block 116 contains circuitry that is designed to augment the processing performed on the signal and therefore increase the chance that information can be reliably read from disk drive 100.
It would be desirable to provide an improved disk drive controller in particular and an improved processor in general.